package cn.biplam.back.sql.ddl;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * SQL DDL 语义模型 主键
 * <ul>主键属性有：
 *  <li>主键名
 *  <li>主键字段(可以多个)
 * <ul>
 * 
 * @author 	WangSong
 * @version 1.0
 */
public class PK implements Serializable {
	
	private static final long serialVersionUID = 7878014878520223007L;
	/**主键名*/
	private String sPkName;
	/**主键列名*/
	private ArrayList<String> aPkColumnNames;
	
	/**
	 * 创建主键
	 */
	public PK(){
		this(null);
	}
	
	/**
	 * 传入主键名创建主键
	 * @param sPkName
	 */
	public PK(String sPkName){
		this.sPkName=sPkName;
		this.aPkColumnNames=new ArrayList<String>();
	}

	/**
	 * 设置主键名
	 * @param sPhysicalName
	 */
	public void setName(String sPhysicalName) {
		this.sPkName = sPhysicalName;	
	}

	/**
	 * 获取主键名 
	 * @return
	 */
	public String getName() {
		return this.sPkName;
	}
	
	/**
	 * 返回主键字段容器
	 * @return
	 */
	public ArrayList<String> getColumnName(){
		return this.aPkColumnNames;
	}

	/**
	 * 返回主键字段逗号分隔的文本表示
	 * @return
	 */
	public String getColumnNames() {
		StringBuilder sb = new StringBuilder();
		for(String ite:this.aPkColumnNames){
			sb.append(ite);
			sb.append(',');
		}
		sb.delete(sb.length()-1, sb.length());
		return sb.toString();

	}

	/**
	 * 放入一个主键字段
	 * @param pkColumnName
	 */
	public void putColumn(String pkColumnName) {
		this.aPkColumnNames.add(pkColumnName);
	}
}
